package org.iteye.bbjava.util.jdbc;

import java.util.List;
import java.util.Map;


/**
 * Box类主要是封装一些常用的crud操作，基本能够完成日常简单的crud
 * @author zhang
 * 
 * */
public interface Box<T> {
	
	/**
	 * 根据sql查询，并把结果集以map形式返回
	 * @author zhang
	 * @param sql sql的查询语句
	 * @param map 
	 * @return 返回查询结果，以key-value方式，以Map进行封装
	 * */
	public Map<String,String> queryOne(String sql,Map<String,String> map);
	
	/**
	 * 根据sql查询，把结果集以对应的实体返回
	 * @author zhang
	 * @param  querySql 查询语句
	 * @return 返回查询记录实体，以开发者创建的类进行封装
	 * */
	public T queryOne(String querySql);
	
	/**
	 * 根据sql查询，并把结果集以List形式返回
	 * @author zhang
	 * @param  querySql 查询语句
	 * @return 结果实体集
	 * 
	 * **/
	public List<T> getList(String querySql);
	
	
	/**
	 * 预留操作,拖管一个类,并将指定clazz方法名称本方法将会执行指定的操作
	 * @author zhang
	 * @param operatName 方法名称
	 * @param clazz 拖管类型
	 * @return 拖管类操作的返回结果
	 * **/
	public Object doOperat(String operatName,Class clazz);
	
	/**
	 * 保存记录
	 * @author zhang
	 * @param  t 范形参数类型的实例对象
	 * @return 影响数据库记录行数
	 * **/
	public int save(T t);
	
	/**
	 * 更实记录
	 * @author zhang
	 * @param t 范形参数类型的实例对象
	 * @return 影响数据库记录行数
	 * **/
	public int update(T t);
	
	/**
	 * 删除记录
	 * @author zhang
	 * @param delSql del语句
	 * @return 影响数据库记录行数
	 **/
	public int remove(String delSql);
}
